HOW TO MAKE SKY THEFT MODS  -  CARS AND TRAINERS
================================================

You don't need the Unreal Editor for any of this. A Sky Theft mod is a folder with one
text file in it, manifest.skytheftmod.json. Open it in Notepad (or VS Code), change
it, save it, then in the game tap Sky Mobile -> Mods -> RELOAD MODS.

    Windows\                         <- the folder with SkytheftrebornDev.exe
      Mods\                          <- every mod goes in here
        SkyRocketGT\
          manifest.skytheftmod.json
        MyCoolCar\
          manifest.skytheftmod.json
        MyTrainer\
          manifest.skytheftmod.json

In the game, open Sky Mobile (P / D-Pad Down) and tap the Mods app:
  - RELOAD MODS       picks up new or edited mods without restarting the game
  - SPAWN <CAR>       delivers a mod car next to Kevin
  - TURN OFF / ON     switches a mod off or on (remembered between sessions)
  - OPEN MODS FOLDER  opens this folder
Mod cars also show up at the bottom of the Vehicles app under MOD CARS.

One mod can have cars AND a trainer in the same manifest.


THE MANIFEST (every mod starts like this)
-----------------------------------------
{
  "formatVersion": 1,                <- always 1
  "id": "MyCoolMod",                 <- letters, numbers, - or _  (must be unique)
  "name": "My Cool Mod",             <- shown in the Mods app
  "version": "1.0.0",
  "author": "Your name",
  "description": "What your mod does.",
  "enabled": true,                   <- false = installed but off

  "vehicles": [ ... ],               <- cars (optional)
  "trainer": { ... }                 <- a trainer menu (optional)
}

JSON rules that catch everyone:
  - Text goes in "double quotes". Numbers and true/false don't.
  - Put a comma BETWEEN items, but NOT after the last one in a list or { }.
  - The game tells you what's wrong: a broken mod says PROBLEM in red in the Mods app,
    with the reason (missing comma, unknown baseCar, id already taken...).


PART 1: CAR MODS (ADD-ON CARS)
==============================
Mod cars are ADD-ONS: new cars with their own name. They never replace a car that's
already in the game.

Easiest start: copy the SkyRocketGT folder, rename the copy, open its manifest and
change BOTH "id" values (the mod's and the car's) to something new.

  "vehicles": [
    {
      "id": "MyCoolCar",             <- car id (unique across ALL mods; this is the spawn name)
      "name": "My Cool Car",         <- shown on the phone and the driving HUD (max 40 letters)
      "description": "Optional.",
      "baseCar": "SkyDemon550",      <- the body your car is built on (list below)
      "paintColor": "#FF2E88",       <- any hex colour, or [255, 46, 136]
      "topSpeedMph": 160,
      "boostTopSpeedMph": 240,
      "acceleration": 1.2,
      "braking": 1.0,
      "grip": 1.1,
      "steering": 1.0,
      "fuelRangeMiles": 30,
      "massKg": 1500
    }
  ]

One mod can add several cars: put more { ... } blocks in "vehicles", with commas between.

baseCar (the body your car uses):
  SkyDemon550       muscle car   (stock 128 MPH, 202 MPH boost)
  LambeauRevuelto   supercar     (stock 270 MPH, 360 MPH boost)
  MaxedOutLambeau   hypercar     (stock 306 MPH, 405 MPH boost)
  Bronco            4x4 SUV      (stock 250 MPH, 300 MPH boost)
  BMWM340i          sport sedan  (stock 270 MPH, 340 MPH boost)

Every number is optional. Leave one out to keep the base car's value.
  topSpeedMph        30 - 350
  boostTopSpeedMph   30 - 450 (never lower than topSpeedMph)
  acceleration       0.25 - 3    (1 = same as the base car, 2 = twice the engine power)
  braking            0.25 - 3
  grip               0.5 - 2     (more = corners harder, slides less)
  steering           0.5 - 1.6   (more = turns sharper)
  fuelRangeMiles     1 - 500
  massKg             800 - 4000  (heavier = pushes other cars around, slower to stop)

Paint: "paintColor" repaints the car's body paint. To repaint other parts too, add
"paintSlots": ["SlotName", ...] with material slot names (advanced).

Tuning tips that feel good:
  - Fast but drivable: acceleration 1.3 - 1.6, grip 1.2, braking 1.3.
  - Drift car: grip 0.7 - 0.8, steering 1.3.
  - Monster: Bronco body, massKg 3500, acceleration 1.5.
  - Rocket: MaxedOutLambeau body, boostTopSpeedMph 450, acceleration 2+ (and grip 1.5
    so it stays on the road).


PART 2: TRAINERS
================
A trainer is a menu that opens with a key (F4 is the usual one) and gives the player
powers: god mode, spawn cars, money, teleports... The game has the trainer engine built
in, but it stays hidden until a mod with a "trainer" is installed. Your manifest decides
the name, the colour, the key, the pages and every option on them.

Fastest way to make your own: copy the SkyTheftMegaTrainerV4 folder (from the Mega
Trainer V4 download), rename it, change "id", "name" and "title", then move options
around, delete the ones you don't want, and add your own.

  "trainer": {
    "title": "My Trainer",              <- big name at the top of the menu
    "subtitle": "BY ME",                <- small line under it (optional)
    "hotkey": "F4",                     <- keyboard key that opens it
    "gamepadHotkey": ["Gamepad_LeftThumbstick", "Gamepad_RightThumbstick"],
                                        <- controller buttons held together (optional)
    "accentColor": "#FF3B1F",           <- header and highlight colour
    "pages": [
      {
        "name": "Player",
        "options": [
          { "label": "God Mode", "action": "godMode" },
          { "label": "Give Me Money", "action": "addCash", "value": 500000 }
        ]
      },
      {
        "name": "Cars",
        "options": [
          { "label": "Invincible Lambeau", "action": "spawnCar", "car": "LambeauRevuelto", "invincible": true }
        ]
      }
    ]
  }

Up to 20 pages, up to 60 options per page. The menu scrolls.

hotkey: any keyboard key by its Unreal name: F1-F12 (F5, F6 and F8 are taken by the
game), Insert, Home, End, PageUp, PageDown, Delete, NumPadNine, Tilde, the letter keys
the game doesn't use... Two trainers can be installed at once if they use different keys.

gamepadHotkey buttons: Gamepad_LeftThumbstick, Gamepad_RightThumbstick,
Gamepad_LeftShoulder, Gamepad_RightShoulder, Gamepad_DPad_Up / _Down / _Left / _Right,
Gamepad_FaceButton_Top / _Left / _Right / _Bottom, Gamepad_Special_Left (View/Back).

Every option has a "label" (what the menu says) and an "action" (what it does).
Optional "description" replaces the help line shown under the menu.

ACTIONS
-------
On/off switches (the menu shows ON / OFF):
  godMode            Kevin can't be hurt
  neverWanted        the police never come after you
  infiniteAmmo       guns never run out or need reloading
  superRun           run faster        "value": speed multiplier, 1-10 (default 3)
  superJump          jump higher       "value": jump multiplier, 1-8 (default 3)
  unlimitedMoney     SkyCash keeps topping itself up to 1 billion
  invincibleCars     whatever Kevin drives can't be damaged or blown up
  slowMotion         slow the world    "value": game speed, 0.05-1 (default 0.35)

One-shot actions:
  heal               full health
  clearWanted        lose all wanted stars
  setWanted          "value": 0-5 stars
  giveAllWeapons     pistol, Tommy Gun, shotgun, AK-47, sniper, grenades
  addCash            "value": how much SkyCash (default 100000, max 1000000000)
  giveAllProperties  owns the Modern House and the Hill Mansion
  completeAllMissions  marks every story mission done
  hundredPercent     all of the above + all weapons + 1 billion SkyCash, then saves a
                     save called "100% Trainer Save"
  spawnCar           "car": any car id (base game or a mod car, see below)
                     "invincible": true   the car can't be hurt
                     "warpInto": false    put it next to Kevin instead of seating him in it
  carList            opens a list of EVERY car in the game (mod cars too) to spawn from.
                     "invincible": true makes everything spawned from it invincible.
  repairCar          fixes and refuels the car you're in
  flipCar            puts the car you're in back on its wheels
  refuel             fills the tank
  setTime            "value": hour of the day, 0-24 (8 = morning, 19.5 = 7:30 pm)
  teleport           "x", "y" (and optional "z"): go there; your car comes along.
                     OR "home": "KevinBrickHouse", "ModernHouse" or "HillMansion"
  showPosition       shows where you are as "x", "y", "z" - copy them into a teleport

Car ids for spawnCar: SkyDemon550, LambeauRevuelto, MaxedOutLambeau, Bronco, BMWM340i,
FordRaptor, PoliceCruiser, plus the "id" of any installed mod car (SkyRocketGT, ...).
Not sure? Use a "carList" option: it lists everything spawnable.

Making a teleport:
  1. Add  { "label": "Where am I", "action": "showPosition" }  to your trainer.
  2. Walk/drive to the spot in the game, use it, and write down the numbers.
  3. Add  { "label": "My Spot", "action": "teleport", "x": 1850, "y": 4100, "z": 40 }
  Leave "z" out and the game drops you on the highest ground there (could be a roof).

A trainer mod can ship its own cars too: put a "vehicles" list in the same manifest
and spawn them by their id (the Mega Trainer V4 does this with its Max Power Rocket).


IF A MOD DOESN'T SHOW UP
------------------------
Open the Mods app. A mod with a problem says PROBLEM in red and explains what's wrong.
Options with an unknown action, a spawnCar without "car", or a teleport without x/y are
skipped and listed there too. Fix the file, then tap RELOAD MODS.


ADVANCED: UNREAL CONTENT MODS (.pak)
------------------------------------
Mods can also ship cooked Unreal content in a .pak file named in the manifest
("pak": "MyMod.pak"). Cook it with the same Unreal Engine version (5.8, Win64), and
keep every asset under /Game/Mods/<ModId>/. Packages with files anywhere else are
rejected, so a mod can never overwrite the base game's files.


SHARING YOUR MOD
----------------
Zip your mod's folder (the one with manifest.skytheftmod.json in it) and share the zip.
Players unzip it into their Mods folder and tap RELOAD MODS. Write a short readme that
says which keys open it and what it does.
